from devicetest.api import Asserts
from devicetest.aw.OpenHarmony import CommonOH
from devicetest.core.test_case import TestCase, Step

from aw.common import common_setup, common_teardown
from aw.pom import DeskTop, Keyboard


class PreTest_RK3568_Basic_Desktop_1000(TestCase, DeskTop):
    # 预置条件：
    # 烧写目标版本后，正常进入桌面
    # 测试步骤：
    # 1.长按应用图标移动到另一应用图标处
    # 2.长按文件夹
    # 3.点击重命名，输入新的名称
    # 4.添加其他应用进入此文件夹
    # 5.进入文件夹长按应用，点击移出文件夹
    # 预期结果：
    # 1.应用合并进入一个文件夹内
    # 2.长按文件夹显示重命名弹窗，输入新的名称
    # 3.桌面正常显示新的名称
    # 4.可以正常拖动其他应用进入此文件夹
    # 5.应用移出文件夹显示在桌面上

    def __init__(self, controllers):
        self.TAG = self.__class__.__name__
        TestCase.__init__(self, self.TAG, controllers)

    def setup(self):
        common_setup(self.Phone1)

    def process(self):
        Step('步骤1.长按应用图标移动到另一应用图标处')
        CommonOH.drag(self.Phone1, sx=80, sy=320, ex=220, ey=320)
        Step('预期结果1、应用合并到文件夹中无异常')
        CommonOH.checkIfTextExist(self.Phone1, '新建文件夹1')

        Step('步骤2.长按文件夹')
        x1, y1 = CommonOH.getPointByCondition(self.Phone1, '新建文件夹1')
        CommonOH.click(self.Phone1, x=x1, y=y1 - 110, mode='LONG')
        Step('预期结果2.长按文件夹显示重命名弹窗，输入新的名称')
        CommonOH.checkIfTextExist(self.Phone1, '重命名')

        Step('步骤3.点击重命名，输入新的名称')
        CommonOH.touchByText(self.Phone1, '重命名')
        CommonOH.click(self.Phone1, x=547, y=209)
        CommonOH.touchByType(self.Phone1, 'TextInput')
        CommonOH.click(self.Phone1, **Keyboard.key_a)
        CommonOH.click(self.Phone1, **Keyboard.close)
        # 第一次退出编辑，第二次退出文件夹
        CommonOH.click(self.Phone1, **self.center)
        CommonOH.click(self.Phone1, **self.center)
        Step('预期结果3.桌面正常显示新的名称')
        CommonOH.checkIfTextExist(self.Phone1, 'a')

        Step('步骤4.添加其他应用进入此文件夹')
        CommonOH.drag(self.Phone1, sx=645, sy=180, ex=x1, ey=y1-110)
        CommonOH.click(self.Phone1, x=x1, y=y1 - 110)
        Step('预期结果4.可以正常拖动其他应用进入此文件夹')
        x2, _ = CommonOH.getPointByCondition(self.Phone1, 'a')
        x3, _ = CommonOH.getPointByCondition(self.Phone1, '添加')
        Asserts.assert_less(x3, x2)

        Step('步骤5.进入文件夹长按应用，点击移出文件夹')
        # 移2次则全部移出来了
        CommonOH.click(self.Phone1, x=220, y=360, mode='LONG')
        CommonOH.touchByText(self.Phone1, '移出文件夹')
        CommonOH.click(self.Phone1, x=220, y=360, mode='LONG')
        CommonOH.touchByText(self.Phone1, '移出文件夹')
        Step('预期结果5.应用移出文件夹显示在桌面上')
        CommonOH.checkIfTextExist(self.Phone1, 'a', expect=False)

    def teardown(self):
        common_teardown(self.Phone1)
